intersection of two linked list

Given two lists sorted in increasing order, create a new list representing the intersection of the two lists. The new list should be made with its own memory — the original lists should not be changed. Example 1: Input: L1 = 1->2->3->4->6 L2 = 2->4->6->8 Output: 2 4 6 Explanation: For the given first two linked list, 2, 4 and 6 are the elements in the intersection Example 2: Input: L1 = 10->20->40->50 L2 = 15->40 Output: 40



        Code
        
       
    Node* findIntersection(Node* head1, Node* head2)
    {
     Node* head=NULL;
     Node* p1=head1;
     Node* p2=head2;
     Node* curr=NULL;
     while(p1&&p2)
      {
         if(p1->data==p2->data)
         {
             if(head==NULL)
             {
                 Node* temp=new Node(p1->data);
                 head=temp;
                 curr=temp;
             }
             else
             {
                 Node* temp=new Node(p1->data);
                 
                 curr->next=temp;
                 curr=curr->next;
             }
             p1=p1->next;
             p2=p2->next;
         }
         else
         {
             if(p1->data>p2->data)
              p2=p2->next;
              else
              p1=p1->next;
         }
      }
     return head;
     
    }